# Venezuela Voting Behaviour

library(tidyverse)
library(readxl)
library(stringi)

#### Municipalities Standardization ####

ven_centros <- read_excel("data/Elecciones_Centros_2006_2021.xlsx")

code_nom_centros <- ven_centros %>% select(centro, nombre_centro) %>% distinct()

write.csv(code_nom_centros, "code_nom_centros.csv", row.names = F)

summary(ven_centros)

# rows_with_na <- ven_centros[!complete.cases(ven_centros), ]

ven_centros <- ven_centros %>% mutate(
  Municipio = case_when(
  str_detect(Municipio, "FALCON") & Parroquia == "TINAQUILLO" ~ "AUTONOMO TINAQUILLO",
  str_detect(Municipio, "LAS MERCEDES") ~ "JUAN JOSE RONDON",
  TRUE ~ Municipio),
  centro = as.character(centro),
  mesas = as.character(mesas),
  eleccion = as.factor(eleccion),
  estado = as.factor(estado),
  Municipio = as.factor(Municipio),
  Parroquia = as.factor(Parroquia)
)


ven_edo_year <- ven_centros %>% 
  group_by(eleccion, estado) %>% 
  summarise(across(where(is.numeric), ~ sum(.x, na.rm = T))) %>% 
  rowwise() %>% 
  mutate(voto_valido = sum(c(of_c, op_c, ppt_c, ot_c), na.rm = T),
         of_p = (of_c/voto_valido)*100,
         op_p = (op_c/voto_valido)*100,
         ppt_p = (ppt_c/voto_valido)*100,
         ot_p = (ot_c/voto_valido)*100
         ) 


table(ven_edo_year$eleccion)

view(ven_centros %>% filter(eleccion == "201801"))

ven_centros <- ven_centros %>% 
  rename(year = eleccion)


codis_elecciones <- read_excel("data/codis_eleccion_centro.xlsx")
codis_elecciones$year <- as.factor(codis_elecciones$year)


ven_centros_eleccion_pres <- ven_centros %>% 
  left_join(., codis_elecciones, by = "year") %>% 
  filter(eleccion == "PRES") %>% 
  rename(otro_c = ot_c) %>% 
  mutate(
    of_c = case_when(
      year == 201801 ~ of_c,  # Keep `of_c` unchanged in 2018
      TRUE ~ of_c + ppt_c  # Add `ppt_c` to `of_c` in other years
    ),
    otro_c = case_when(
      year == 201801 ~ otro_c + ppt_c,  # Add `ppt_c` to `otro_c` in 2018
      TRUE ~ otro_c  # Keep `otro_c` unchanged in other years
    )
  ) %>% 
  select(-ppt_c)


names(ven_centros_eleccion_pres)

pres_2024 <- rio::import("data/resultados-macedonia-del-norte.csv", encoding = "Latin-1") %>% 
  mutate(Municipio = str_replace(MUN, "ï¿½", "Ñ"),
         Municipio = str_remove(Municipio, "MP\\.\\s*"),
         Parroquia = str_replace(PAR, "ï¿½", "Ñ"),
         Parroquia = case_when(
           Parroquia == "C.M. MATURIN" ~ Parroquia,  # Keep this value unchanged
           TRUE ~ str_remove_all(Parroquia, "CM\\.\\s*|PQ\\.\\s*")),  # Remove CM. and PQ. for all other rows
           Parroquia = if_else(
             str_detect(Parroquia, "STA"),            # Check if "STA" is in the row
             str_replace(Parroquia, "\\.", ""),       # Remove the dot after "STA"
             Parroquia                                # Keep other rows unchanged
           ),
         Parroquia = stri_trans_general(Parroquia, "Latin-ASCII"),
         otro_c = LM+JABE+JOBR+AE+CF+DC+EM+BERA,
         COD_EDO = as.character(COD_EDO),
         COD_MUN = as.character(COD_MUN),
         COD_PAR = as.character(COD_PAR),
         CENTRO = as.character(CENTRO),
         MESA = as.factor(MESA)
         ) 

names(pres_2024)

pres_2024_fusion <- pres_2024 %>% 
    select(COD_EDO,EDO,COD_MUN, Municipio,COD_PAR,
           Parroquia,CENTRO,MESA, VOTOS_VALIDOS, VOTOS_NULOS, NM,EG,otro_c)

#### Municipalities codes ####

municipios_dif <- setdiff(pres_2024_fusion$Municipio, ven_centros_eleccion_pres$Municipio)

municipios_diff_pres_2024 <- pres_2024_fusion %>% select(Municipio, Parroquia) %>% 
  filter(Municipio %in% municipios_dif) %>% distinct()

pres_2024_fusion <- pres_2024_fusion %>%
  mutate(
    Municipio = case_when(
      str_detect(Municipio, "BLVNO LIBERTADOR") ~ "LIBERTADOR",
      str_detect(Municipio, "L/DIEGO BAUTISTA") ~ "DIEGO BAUTISTA URBANEJA",
      str_detect(Municipio, "S JUAN CAPISTRANO") ~ "SAN JUAN DE CAPISTRANO",
      str_detect(Municipio, "MARIO B IRAGORRY") ~ "MARIO BRICEÑO IRAGORRY",
      str_detect(Municipio, "JOSE R REVENGA") ~ "JOSE RAFAEL REVENGA",
      str_detect(Municipio, "FRANCISCO LINARES") ~ "FRANCISCO LINARES ALCANTARA",
      str_detect(Municipio, "OCUMARE D L COSTA") ~ "OCUMARE DE LA COSTA DE ORO",
      str_detect(Municipio, "ALBERTO ARVELO T") ~ "ALBERTO ARVELO TORREALBA",
      str_detect(Municipio, "A JOSE DE SUCRE") ~ "ANTONIO JOSE DE SUCRE",
      str_detect(Municipio, "ANDRES E. BLANCO") ~ "ANDRES ELOY BLANCO",
      str_detect(Municipio, "ANGOSTURA DEL OR") ~ "HERES",
      str_detect(Municipio, "BLVNO DE ANGOSTU") ~ "ANGOSTURA",
      str_detect(Municipio, "AUTONOMO TINAQUI") ~ "AUTONOMO TINAQUILLO",
      str_detect(Municipio, "PAO S J BAUTISTA") ~ "PAO DE SAN JUAN BAUTISTA",
      str_detect(Municipio, "MONS. ITURRIZA") ~ "MONSEÑOR ITURRIZA",
      str_detect(Municipio, "JUAN GERMAN ROSC") ~ "ROSCIO",
      str_detect(Municipio, "S JOSE DE GUARIBE") ~ "SAN JOSE DE GUARIBE",
      str_detect(Municipio, "S MARIA DE IPIRE") ~ "SANTA MARIA DE IPIRE",
      str_detect(Municipio, "SAN GERONIMO DE G") ~ "SAN GERONIMO DE GUAYABAL",
      str_detect(Municipio, "ANDRES E BLANCO") ~ "ANDRES ELOY BLANCO",
      str_detect(Municipio, "ANTONIO PINTO S.") ~ "ANTONIO PINTO SALINAS",
      str_detect(Municipio, "OB. RAMOS DE LORA") ~ "OBISPO RAMOS DE LORA",
      str_detect(Municipio, "CARACCIOLO PARRA") ~ "CARACCIOLO PARRA OLMEDO",
      str_detect(Municipio, "TULIO F CORDERO") ~ "TULIO FEBRES CORDERO",
      str_detect(Municipio, "PENIN. DE MACANAO") ~ "PENINSULA DE MACANAO",
      str_detect(Municipio, "VILLALBA\\(I.COCHE\\)") ~ "VILLALBA",
      str_detect(Municipio, "M.JOSE V DE UNDA") ~ "MONSEÑOR JOSE VICENTE DE UNDA",
      str_detect(Municipio, "GENARO BOCONOITO") ~ "SAN GENARO DE BOCONOITO",
      str_detect(Municipio, "S RAFAEL DE ONOTO") ~ "SAN RAFAEL DE ONOTO",
      str_detect(Municipio, "CRUZ S ACOSTA") ~ "CRUZ SALMERON ACOSTA",
      str_detect(Municipio, "CAPACHO NUEVO") ~ "INDEPENDENCIA",
      str_detect(Municipio, "CAPACHO VIEJO") ~ "LIBERTAD",
      str_detect(Municipio, "SAMUEL MALDONADO") ~ "SAMUEL DARIO MALDONADO",
      str_detect(Municipio, "ANTONIO ROMULO C") ~ "ANTONIO ROMULO COSTA",
      str_detect(Municipio, "FCO DE MIRANDA") ~ "FRANCISCO DE MIRANDA",
      str_detect(Municipio, "JOSE M. VARGAS") ~ "JOSE MARIA VARGAS",
      str_detect(Municipio, "S RAFAEL CARVAJAL") ~ "SAN RAFAEL DE CARVAJAL",
      str_detect(Municipio, "J.F.MARQUEZ C.") ~ "JOSE FELIPE MARQUEZ CAÑIZALES",
      str_detect(Municipio, "J.V. CAMPO ELIAS") ~ "JUAN VICENTE CAMPO ELIAS",
      str_detect(Municipio, "ARISTIDES BASTID") ~ "ARISTIDES BASTIDAS",
      str_detect(Municipio, "INDIGENA BLVNO G") ~ "GUAJIRA",
      str_detect(Municipio, "MACHIQUES DE P") ~ "MACHIQUES DE PERIJA",
      str_detect(Municipio, "LA CAÑADA DE U.") ~ "LA CAÑADA DE URDANETA",
      str_detect(Municipio, "JESUS E LOSSADA") ~ "JESUS ENRIQUE LOSSADA",
      str_detect(Municipio, "FRANCISCO J PULG") ~ "FRANCISCO JAVIER PULGAR",
      str_detect(Municipio, "JESUS M SEMPRUN") ~ "JESUS MARIA SEMPRUM",
      TRUE ~ Municipio # Keep other values unchanged
    )
  )

names(pres_2024_fusion)
names(ven_centros_eleccion_pres)

#### Checking difference between precinct codes ####

unique_polls_ven_pres <- ven_centros_eleccion_pres %>% 
  select(centro,estado, Municipio,Parroquia,nombre_centro) %>% 
  distinct() %>% unite(municipio_centro, Municipio, centro, sep = "_", remove = F)

unique_polls_2024 <- pres_2024_fusion %>% select(1:7) %>% 
  mutate(year = as.factor(2024)) %>% 
  unite(municipio_centro, Municipio, CENTRO, sep = "_", remove = F)

poll_diff <- setdiff(unique_polls_ven_pres$municipio_centro, unique_polls_2024$municipio_centro)

# Tenemos una diferencia de 1241 centros entre las elecciones de 2024 con el resto

#### EDO codes ####

unique(ven_centros_eleccion_pres$estado)
unique(pres_2024_fusion$EDO)

pres_2024_fusion <- pres_2024_fusion %>% 
  mutate(
  EDO = str_replace_all(EDO, "EDO\\. ", ""),  # Remove "EDO. "
  EDO = case_when(
    EDO == "NVA.ESPARTA" ~ "NUEVA ESPARTA",
    EDO == "EDO.NVA.ESPARTA" ~ "NUEVA ESPARTA",
    EDO == "DELTA AMAC" ~ "DELTA AMACURO",
    TRUE ~ EDO  # Keep other values unchanged
  ),
  COD_EDO = case_when(
    EDO == "ZULIA" ~ "21",
    TRUE ~ COD_EDO
  ),
  COD_MUN = case_when(
    Municipio == "MARACAIBO" ~ "5",
    TRUE ~ COD_MUN
  )
)

ven_centros_eleccion_pres <- ven_centros_eleccion_pres %>% 
  mutate(estado = case_when(
   estado == "ANZOÁTEGUI" ~ "ANZOATEGUI",
   TRUE ~ estado
  )
)

## Check differences

edo_diff <- setdiff(ven_centros_eleccion_pres$estado, pres_2024_fusion$EDO)
edo_diff

### Parroquia code ###

par_diff <- setdiff(pres_2024_fusion$Parroquia, ven_centros_eleccion_pres$Parroquia)
par_hist <- unique(as.character(ven_centros_eleccion_pres$Parroquia))
sort(par_hist)
sort(par_diff)

pres_2024_fusion <- pres_2024_fusion %>% mutate(
  Parroquia = case_when(
  Parroquia == "ALTOS DE LOS GODOS" ~ "ALTO DE LOS GODOS",
  Parroquia == "AMENODORO RANGEL LAMU" ~ "AMENODORO RANGEL LAMUS",
  Parroquia == "ANTONIO N BRICENO" ~ "ANTONIO N BRICEÑO",
  Parroquia == "ELEAZAR LOPEZ C" ~ "ELEAZAR LOPEZ CONTRERAS",
  Parroquia == "ELEAZAR LOPEZ CONTRERA" ~ "ELEAZAR LOPEZ CONTRERAS",
  Parroquia == "FILAS DE MARICHE" ~ "FILAS DE MARICHES",
  Parroquia == "ISAIAS MEDINA ANGARIT" ~ "ISAIAS MEDINA ANGARITA",
  Parroquia == "JOSE CENOVIO URRIBARR" ~ "JOSE CENOVIO URRIBARRI",
  Parroquia == "JUAN PABLO PENALOZA" ~ "JUAN PABLO PEÑALOZA",
  Parroquia == "LA APARICION" ~ "APARICION",
  Parroquia == "LUIS B. PRIETO F." ~ "LUIS B PRIETO FIGUERO",
  Parroquia == "MCL.ANTONIO J DE SUCRE" ~ "MCL. ANTONIO J DE SUCRE",
  Parroquia == "PALACIOS FAJARDO" ~ "PALACIO FAJARDO",
  Parroquia == "PALMASOLA" ~ "PALMA SOLA",
  Parroquia == "PARAUTE" ~ "ALONSO DE OJEDA",
  Parroquia == "PEDRO BRICENO MENDEZ" ~ "PEDRO BRICEÑO MENDEZ",
  Parroquia == "PQ AUGUSTO MIJARES" ~ "AUGUSTO MIJARES",
  Parroquia == "SAN JOSE DE AEROCUAR" ~ "SAN JOSE DE AREOCUAR",
  Parroquia == "SAN JOSE DE LA MONTANA" ~ "SAN JOSE DE LA MONTAÑA",
  Parroquia == "SAN JUAN DE LAS GALDO" ~ "SAN JUAN GALDONAS",
  Parroquia == "SAN RAFAEL DE A." ~ "SAN RAFAEL DE ALZAZAR",
  Parroquia == "STA ANA  DEL TACHIRA" ~ "STA. ANA  DEL TACHIRA",
  Parroquia == "STACRUZ DE BUCARAL" ~ "STA.CRUZ DE BUCARAL",
  Parroquia == "URIBARRI" ~ "URRIBARRI",
  Parroquia == "GUAJIRA" ~ "GOAJIRA",
  
# Replacing only **specific occurrences** of "N" with "Ñ"
  Parroquia == "MARCELINO BRICENO" ~ "MARCELINO BRICEÑO",
  Parroquia == "MONTANA VERDE" ~ "MONTAÑA VERDE",
  Parroquia == "MONSENOR CARRILLO" ~ "MONSEÑOR CARRILLO",
  Parroquia == "PENA BLANCA" ~ "PEÑA BLANCA",
  Parroquia == "FERNANDEZ PENA" ~ "FERNANDEZ PEÑA",
  Parroquia == "DOMINGO PENA" ~ "DOMINGO PEÑA",
  Parroquia == "IGNACIO BRICENO" ~ "IGNACIO BRICEÑO",
  Parroquia == "MONSENOR JAUREGUI" ~ "MONSEÑOR JAUREGUI",
  
# General case for other names that should contain "Ñ"
  Parroquia %in% c("CANA DE AZUCAR", "CANO DELGADITO", "CANO EL TIGRE", "MARINO",
                   "LA PENA", "MIGUEL PENA", "PENALVER", "PINANGO", "CASTANEDA",
                   "LAS PENITAS", "EL BANO", "URENA", "PARHUENA", "TUNAME") ~ str_replace(Parroquia, "N", "Ñ"),
  TRUE ~ Parroquia # Keep everything else unchanged
  ),
COD_PAR = case_when(
  Parroquia == "MACUTO" ~ "1137",
  Parroquia == "RAUL LEONI" ~ "1006",
  TRUE ~ COD_PAR)
)

ven_centros_eleccion_pres <- ven_centros_eleccion_pres %>%
  mutate(Parroquia = case_when(
    Parroquia == "JUAN DE VILLEGAS" ~ "GUERRERA ANA SOTO",
    TRUE ~ Parroquia  # Keep all other values unchanged
  ))


#### Registered voters for 2024 #####

rep_2024 <- read_csv("data/TablaMesaEleccionPresidencial2024.csv") %>% 
  select(-starts_with("...")) %>% 
  select(CODIGO_CV, MESA, VOTANTES_MESA) %>% 
  unite(centro_mesa, CODIGO_CV, MESA, remove = T) %>% 
  rename(rep_c = VOTANTES_MESA)


#### Merge ####

pres_2024_fusion <- pres_2024_fusion %>% 
  unite(centro_mesa, CENTRO, MESA, remove = F) %>% 
  left_join(., rep_2024, by = "centro_mesa") %>% 
  select(-centro_mesa) %>% 
  rename(
  of_c = NM,
  op_c = EG,
  validos = VOTOS_VALIDOS,
  nulos = VOTOS_NULOS,
  estado = EDO,
  mesa = MESA,
  centro = CENTRO) %>% 
  mutate(year = as.factor(2024),
         abst_c = rep_c - (validos + nulos))

code_edo_mun_par <- pres_2024_fusion %>% select(COD_EDO, estado, COD_MUN, Municipio, COD_PAR, Parroquia) %>% 
  distinct() %>% unite(edo_mun_par, estado, Municipio, Parroquia, sep = "_", remove = T) %>% 
  arrange(edo_mun_par)

ven_centros_eleccion_pres_fusion <- ven_centros_eleccion_pres %>%
  unite(edo_mun_par, estado, Municipio, Parroquia, sep = "_", remove = F) %>% 
  left_join(., code_edo_mun_par, by = "edo_mun_par") %>% 
  rename(
    mesa = mesas,
    validos = voto_c,
    nulos = nulo_c
  ) %>% 
  mutate(year = as.factor(str_sub(as.character(year), 1, 4))) %>% 
  select(year, COD_EDO, estado, COD_MUN, Municipio, COD_PAR, Parroquia, centro, mesa, 
               of_c, op_c, otro_c,
               validos, nulos, rep_c, abst_c)


names(ven_centros_eleccion_pres_fusion)
names(pres_2024_fusion)

ven_elec_2006_2024 <- rbind(ven_centros_eleccion_pres_fusion, pres_2024_fusion)

view(ven_elec_2006_2024 %>% filter(year == 2018))

write.csv(ven_elec_2006_2024, file = "ven_elec_2006_2024.csv", row.names = F)
saveRDS(ven_elec_2006_2024, file = "ven_elec_2006_2024.rds")
